/**
 * 编写一个不并发/并行的 async+await测试
 * 这是一个没用的例子，因为不会执行任何东西，只是为了演示async+await的写法
 */
//pub use tokio::runtime;
// #[macro_use]
// extern crate tokio;
use std::thread;
pub use tokio::runtime::Runtime;
//use tokio::runtime::Runtime;
//use tokio::Runtime;

struct Hero {
    name: String,
    age: u32,
}

fn main() {
    let hero = Hero {
        name: "孙悟空".to_string(),
        age: 100,
    };
    let ws = Hero {
        name: "武松".to_string(),
        age: 99,
    };
    let str1 = run(&hero);
    let str2 = run(&ws);
}

async fn fight(h: &Hero) -> String {
    let temp = h.name.clone() + "正在战斗中....";
    temp.to_string()
}
//这个方法要返回实现Debug特质的类型
async fn run(h: &Hero) -> String {
    let rt = Runtime::new().unwrap();
    // 使用运行时的 block_on 方法来执行异步函数
    rt.block_on(fight(&h)).unwrap()
    //let r=fight(&h).await;
    //println!("{}",r);
    //r
}
